@echo off
chcp 65001 >nul
setlocal EnableDelayedExpansion

echo ================================================
echo        SlothV3 完全自动启动脚本
echo ================================================
echo.
echo 当前时间: %date% %time%
echo 当前目录: %cd%
echo 用户: %username%
echo.

echo [1/7] 检查Python环境...
py --version >nul 2>&1
if %errorlevel% equ 0 (
    echo ✅ 检测到py命令可用
    py --version
    set PYTHON_CMD=py
    goto :python_found
)

python --version >nul 2>&1
if %errorlevel% equ 0 (
    echo ✅ 检测到python命令可用
    python --version
    set PYTHON_CMD=python
    goto :python_found
)

echo ⚠️ 未检测到Python，正在使用winget自动安装...
echo.

REM 检查winget是否可用
winget --version >nul 2>&1
if %errorlevel% equ 0 (
    echo 正在使用winget安装Python...
    winget install Python.Python.3.11 --silent --accept-package-agreements --accept-source-agreements
    if !errorlevel! equ 0 (
        echo ✅ Python安装完成，刷新环境变量...
        
        REM 刷新PATH环境变量
        for /f "tokens=2*" %%a in ('reg query "HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment" /v PATH 2^>nul') do set MACHINE_PATH=%%b
        for /f "tokens=2*" %%a in ('reg query "HKCU\Environment" /v PATH 2^>nul') do set USER_PATH=%%b
        set PATH=!MACHINE_PATH!;!USER_PATH!
        
        REM 重新检查Python
        py --version >nul 2>&1
        if !errorlevel! equ 0 (
            set PYTHON_CMD=py
            echo ✅ Python安装成功，使用py命令
            goto :python_found
        )
        
        python --version >nul 2>&1
        if !errorlevel! equ 0 (
            set PYTHON_CMD=python
            echo ✅ Python安装成功，使用python命令
            goto :python_found
        )
    )
)

echo ❌ 自动安装失败，请手动安装Python
echo 1. 访问: https://www.python.org/downloads/windows/
echo 2. 下载Python 3.11或更高版本
echo 3. 安装时勾选"Add Python to PATH"
echo 4. 安装完成后重新运行此脚本
pause
exit /b 1

:python_found
echo.
echo [2/7] 升级pip...
%PYTHON_CMD% -m pip install --upgrade pip --quiet
if %errorlevel% neq 0 (
    echo ⚠️ pip升级失败，继续执行...
) else (
    echo ✅ pip升级完成
)

echo.
echo [3/7] 检查端口8080...
netstat -ano | findstr :8080 > nul
if %errorlevel% equ 0 (
    echo ⚠️ 端口8080已被占用，正在终止进程...
    for /f "tokens=5" %%a in ('netstat -ano ^| findstr :8080') do (
        taskkill /f /pid %%a >nul 2>&1
        echo 已终止PID为%%a的进程
    )
) else (
    echo ✅ 端口8080可用
)

echo.
echo [4/7] 创建虚拟环境...
if exist "venv" (
    echo ✅ 虚拟环境已存在
) else (
    echo 正在创建虚拟环境...
    %PYTHON_CMD% -m venv venv
    if !errorlevel! neq 0 (
        echo ❌ 虚拟环境创建失败
        pause
        exit /b 1
    )
    echo ✅ 虚拟环境创建成功
)

echo.
echo [5/7] 激活虚拟环境...
if exist "venv\Scripts\activate.bat" (
    call venv\Scripts\activate.bat
    echo ✅ 虚拟环境激活成功
) else (
    echo ❌ 虚拟环境激活失败
    pause
    exit /b 1
)

echo.
echo [6/7] 安装依赖包...
if exist "requirements.txt" (
    echo 发现依赖文件: requirements.txt
    echo 正在安装依赖包...
    pip install -r requirements.txt --quiet --disable-pip-version-check
    if !errorlevel! neq 0 (
        echo ⚠️ 使用默认源安装失败，尝试清华源...
        pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple/ --quiet --disable-pip-version-check
        if !errorlevel! neq 0 (
            echo ❌ 依赖包安装失败
            pause
            exit /b 1
        )
    )
    echo ✅ 依赖包安装完成
) else (
    echo ⚠️ 未找到requirements.txt文件
)

echo.
echo [7/7] 检查启动文件...
if exist "start.py" (
    echo ✅ 找到启动文件: start.py
) else (
    echo ❌ 未找到start.py启动文件
    echo 当前目录的Python文件:
    dir *.py /b
    pause
    exit /b 1
)

echo.
echo ================================================
echo              🚀 准备启动服务
echo ================================================
echo 服务地址: http://localhost:8080
echo 按 Ctrl+C 可停止服务
echo ================================================
echo.

echo 正在启动SlothV3服务...
uvicorn start:app --reload --port 8080

echo.
echo ✅ 服务已停止
echo 按任意键退出...
pause >nul 